The present invention relates generally to network security and privacy systems, and more particularly to a method and system for continuously and automatically or semi-automatically defining and updating actions which may be taken in an application program operating on a server.
One way in which the security or privacy of data or an application program residing on a server computer may be compromised is through an unauthorized command. That is, a client computer connectable to the server, such as via the Internet, may transmit a request for the retrieval of data or for the execution of an instruction to which the client is not entitled. For example, a web server accessible over the Internet on which goods are available for sale may allow actions such as the selection of an item to purchase, the input of personal and payment data, or even the execution of an application program to retrieve data previously entered. However, the web server should not allow a given client to change price data or retrieve other data intended to be kept private, and these types of requests should be considered unauthorized or disallowable for that client. Currently, many applications do not include safeguards against clients making these kinds of requests.
Presently, service provider networks (e.g., commercial sites, government institutes, e-commerce sites, etc.) are often protected by firewall security devices or routers. These tools provide a good level of security against attacks based on the weaknesses of low level protocols (such as TCP or UDP) and of generic Internet applications like FTP or TELNET. However, these tools cannot guard implementations of specific application protocols, such as a specific banking application, billing application, insurance application, etc., nor can they account for changes or updates to application protocols.
To prevent clients from performing disallowable actions, a gateway or filter mechanism may be interposed between the client and server to identify and eliminate disallowable requests. As shown in FIG. 1, a filter module 14 is positioned between a server 10 and clients, only one of which is shown in FIG. 1 as client 12. The filter module 14 receives requests from the client 12, eliminates any disallowable actions requested by the client 12 to the server 10, and passes the remaining, allowable parts of requests to the server 10. The filter module 14 determines which requests are allowable by querying a protocol database 16. The protocol database 16 stores an application protocol for the application program residing on the server. As used herein, an application protocol represents some or all of the allowable actions for the application program.
An example of a gateway system and related components is described in the aforementioned applications, Ser. Nos. 09/149,911 and 09/150,112, which are incorporated by reference into this application.
In order to create the protocol database 16, a developer must know all the protocols of the application and the authorized or allowable actions. However, for applications which utilize complex protocols, the process of specifying the precise protocol can be long and tedious. In addition, the application developer is often not even aware of the complete protocol specification, as implicit assumptions made by the programmer are usually extremely difficult to identify. Furthermore, the developer must monitor changes in the application protocol and update the protocol database accordingly. Failure to have a complete and accurate protocol database could prevent clients from making fill use of the application program residing on the server. An ineffective database could alternatively allow clients to take actions which are disallowed in the current version of the application program.
There is therefore a need for a method and system for at least semi-automatically defining application protocols for applications residing on servers on an on-line, real-time basis.